package com.jy.study;

import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.Editor;
import cn.hutool.core.util.ArrayUtil;

import java.util.Arrays;
import java.util.List;

/**
 * @Classname HutoolUtils
 * @Description 记录一些常用的工具类
 * @Date 2019/9/20 11:14
 * @Created by  jiaoyong
 */
public class HutoolUtils {

    public static void main(String[] args) {
        int[] a = {};
        int[] b = null;
        //判空：true
        boolean empty = ArrayUtil.isEmpty(a);
        boolean empty1 = ArrayUtil.isEmpty(b);
        int[] c = {1,2};
        //判非空：true
        boolean notEmpty = ArrayUtil.isNotEmpty(c);

        //新建一个大小为5的字符串数组
        String[] strings = ArrayUtil.newArray(String.class, 5);

        //获取数组对象的元素类型
        Class<?> componentType = ArrayUtil.getComponentType(strings);

        //根据数组元素类型，获取数组的类型
        Class<?> arrayType = ArrayUtil.getArrayType(componentType);

        //强转数组类型
        ArrayUtil.cast(Integer.class, strings);

        //将新元素添加到已有数组中
        //添加新元素会生成一个新的数组，不影响原数组
        ArrayUtil.append(c, 3, 4);

        //将新元素插入到到已有数组中的某个位置
        //添加新元素会生成一个新的数组，不影响原数组
        //如果插入位置为为负数，从原数组从后向前计数，若大于原数组长度，则空白处用null填充
        ArrayUtil.insert(c, 5, 5, 6, 7);

        //采用可变参数方式，将多个泛型数组合并为一个数组。
        String[] str = {"a","b"};
        String[] addAll = ArrayUtil.addAll(strings, str);

        //数组克隆
        int[] clone = ArrayUtil.clone(c);

        //该方法有三个重载，这三个重载配合可以实现支持步进的有序数组或者步进为1的有序数组
        ArrayUtil.range(6,123);

        //过滤数组，只保留偶数
        Integer[] d = {1,2,3,4,5,6};
        Integer[] filter = ArrayUtil.filter(d, new Editor<Integer>() {
            public Integer edit(Integer t) {
               return  (t % 2 == 0) ? t : null;
            }
        });

        //ArrayUtil.contains方法只针对泛型数组，检测指定元素是否在数组中。

        //ArrayUtil.wrap和ArrayUtil.unwrap对原始类型数组和包装类型数组进行转换。

        //ArrayUtil.isArray方法封装了obj.getClass().isArray()。

        /*ArrayUtil.join 方法使用间隔符将一个数组转为字符串，比如[1,2,3,4]这个数组转为字符串，
        间隔符使用“-”的话，结果为 1-2-3-4，join方法同样支持泛型数组和原始类型数组。*/
    }
}
